<?php
/*
* Project: JumboCms
* author: Fabricio S Costa
* version: 1.0
* email: fabriciojf@gmail.com
*/
require_once('modulo/br/com/bemmelhor/persistence/PDOConnectionFactory.class.php');
require_once('modulo/br/com/bemmelhor/model/Comentario.class.php');
require_once('modulo/br/com/bemmelhor/dao/PostDao.class.php');


class ComentarioDAO extends PDOConnectionFactory {

    // constructor
    public function ComentarioDAO(){}


    // realiza uma inserção
    public function save($comentario){

        try{
            //instancia a conexao
            $conex = PDOConnectionFactory::getConnection();

            // executa a query
            $stmt = $conex->prepare("INSERT INTO comentario
            (idPost,nome,email,mensagem,data,hora) VALUES (?,?,?,?,?,?)");

            // valores encapsulados nas variáveis da classe Agenda.
            // sequencia de índices que representa cada valor de minha query
            $stmt->bindValue(1, $comentario->getPost()->getId());
            $stmt->bindValue(2, $comentario->getNome());
            $stmt->bindValue(3, $comentario->getEmail());
            $stmt->bindValue(4, $comentario->getMensagem());
            $stmt->bindValue(5, $comentario->getData());
            $stmt->bindValue(6, $comentario->getHora());

            // executo a query preparada
            $stmt->execute();

            // caso ocorra um erro, retorna o erro;
        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }
    }


    // realiza uma inserção
    public function update($comentario){

        try{
            //instancia a conexao
            $conex = PDOConnectionFactory::getConnection();

            // executa a query
            $stmt = $conex->prepare("UPDATE comentario SET idPost=?,nome=?,email=?,mensagem=?,data=?,hora=? WHERE id=?");
            // valores encapsulados nas variáveis da classe Agenda.
            // sequencia de índices que representa cada valor de minha query
            $stmt->bindValue(1, $comentario->getPost()->getId());
            $stmt->bindValue(2, $comentario->getNome());
            $stmt->bindValue(3, $comentario->getEmail());
            $stmt->bindValue(4, $comentario->getMensagem());
            $stmt->bindValue(5, $comentario->getData());
            $stmt->bindValue(6, $comentario->getHora());
            $stmt->bindValue(7, $comentario->getId());

            // executo a query preparada
            $stmt->execute();

            // caso ocorra um erro, retorna o erro;
        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }
    }


    // remove um registro
    public function remove( $id ){

        try{
            //instancia a conexao
            $conex = PDOConnectionFactory::getConnection();

            // executo a query
            $num = $conex->exec("DELETE FROM comentario WHERE id=$id");

            // caso seja execuado ele retorna o número de rows que foram afetadas.
            if( $num >= 1 ){ return $num; } else { return 0; }
            // caso ocorra um erro, retorna o erro;

        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }

    }


    // realiza uma listagem
    public function listAll(){

        try{
            //instancia a conexao
            $conex = PDOConnectionFactory::getConnection();

            $list = array();
            $postDao = new PostDao();

            // executo a query
            $stmt = $conex->query("SELECT * FROM comentario");

            if ($stmt) {
                $rows = $stmt->fetchAll();
                $i = 0;
                foreach ($rows as $rs) {
                    $list[$i] = new Comentario();
                    $list[$i]->setId($rs['id']);
                    $list[$i]->setPost($postDao->findForId($rs['idPost']));
                    $list[$i]->setNome($rs['nome']);
                    $list[$i]->setEmail($rs['email']);
                    $list[$i]->setMensagem($rs['mensagem']);
                    $list[$i]->setData($rs['data']);
                    $list[$i]->setHora($rs['hora']);
                    $i++;
                }
            }

            return $list;
        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); exit;}
    }


    public function findForId($id){

        try{
            //instancia a conexao
            $conex = PDOConnectionFactory::getConnection();

            $comentario = new Comentario();
            $postDao = new PostDao();

            // executo a query
            $stmt = $conex->query("SELECT * FROM comentario WHERE id=$id");

            if ($stmt) {
                $rows = $stmt->fetchAll();
                foreach ($rows as $rs) {
                    $comentario->setId($rs['id']);
                    $comentario->setPost($postDao->findForId($rs['idPost']));
                    $comentario->setNome($rs['nome']);
                    $comentario->setEmail($rs['email']);
                    $comentario->setMensagem($rs['mensagem']);
                    $comentario->setData($rs['data']);
                    $comentario->setHora($rs['hora']);
                }
            }

            return $comentario;
        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); exit;}
    }


}
?>

                            